﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Inventario_HardSoft.Controlador;
using Inventario_HardSoft.ADO;

namespace Inventario_HardSoft.Presentacion
{
    public partial class Asignar_Equipo : Form
    {
        private Ctrl_Reg_Usu control_RegUsu;
        Ctrl_Reg_Usu control1;
        Ctrl_Reg_Equipo equipo1;
        Ctrl_AsigEquipo controlador;

        List<EQUIPO> listaEquipos;

        public Asignar_Equipo()
        {
            InitializeComponent();
            control1 = new Ctrl_Reg_Usu();
            equipo1 = new Ctrl_Reg_Equipo();
            controlador = new Ctrl_AsigEquipo();
            listaEquipos = new List<EQUIPO>();
            control_RegUsu = new Ctrl_Reg_Usu();
        }
        
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cmb_Usuario_DropDown(object sender, EventArgs e)
        {
            List<USUARIO> usuarios = control1.getList_Reg_Usu();
            cmb_Usuario.Items.Clear();
            foreach (USUARIO u in usuarios)
            {
                cmb_Usuario.Items.Add(u.NOMBRE.ToString());
            }
        }

        private void cmb_Equipo_DropDown(object sender, EventArgs e)
        {
            // carga los equipos por tipo
            cmb_Equipo.Items.Clear();
            foreach (string eq in equipo1.listEquipo())
            {
                cmb_Equipo.Items.Add(eq.ToString());
            }             
        }

        private void btn_Agregar_Click(object sender, EventArgs e)
        {
            bool repetido1 = false;
            bool repetido2 = false;

            if (grid_Equipos.SelectedRows.Count > 0)
            {
                foreach (DataGridViewRow rowSelected in grid_Equipos.SelectedRows)
                {
                    foreach (DataGridViewRow dr in gribAsignado.Rows)
                    {
                        if (rowSelected.Cells["idEquipo"].Value.ToString() == dr.Cells["idequipoasig"].Value.ToString())
                        {
                            repetido1 = true;
                            break;
                        }
                        else
                        {
                            repetido1 = false;
                        }
                    }

                    if (!repetido1)
                    {
                        //verificamos que no este ya instalado
                        foreach (DataGridViewRow dgr in grid_EquipPoseer.Rows)
                        {
                            if (rowSelected.Cells["serieEquipo"].Value.ToString() == dgr.Cells["seriePoseer"].Value.ToString())
                            {
                                repetido2 = true;
                                break;
                            }
                            else
                            {
                                repetido2 = false;
                            }
                        }

                        if (!repetido2)
                        {
                            gribAsignado.Rows.Add(new object[] { rowSelected.Cells["idEquipo"].Value.ToString(), rowSelected.Cells["tipoEquipo"].Value.ToString(), rowSelected.Cells["marcaEquipo"].Value.ToString(), rowSelected.Cells["modeloEquipo"].Value.ToString(), rowSelected.Cells["serieEquipo"].Value.ToString() });
                        }
                    }
                }
            }
             
    }       
   
        private void btn_Eliminar_Click(object sender, EventArgs e)
        {
            if (gribAsignado.SelectedRows.Count > 0)
            {
                gribAsignado.Rows.Remove(gribAsignado.SelectedRows[0]);
            }    
        }
        
        private void cmb_Equipo_SelectionChangeCommitted(object sender, EventArgs e)
        {
            btn_Ver.Focus();
        }

        private void btn_Cancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btn_Ver_Click(object sender, EventArgs e)
        {
            List<EQUIPO> equiposSinAsignar = equipo1.listEqSinAsignar(cmb_Equipo.Text.Trim());
            List<EQUIPO> equiposLiberados = equipo1.listEqLiberado(cmb_Equipo.Text.Trim());
            grid_Equipos.Rows.Clear();
            foreach (EQUIPO eq in equiposSinAsignar)
            {
                grid_Equipos.Rows.Add(new object[] { eq.IDEQUIPO.ToString(), eq.TIPOEQUIPO.ToString(), eq.MARCA.ToString(), eq.MODELO.ToString(), eq.SERIE.ToString() });
            }

            foreach (EQUIPO eq1 in equiposLiberados)
            {
                grid_Equipos.Rows.Add(new object[] { eq1.IDEQUIPO.ToString(), eq1.TIPOEQUIPO.ToString(), eq1.MARCA.ToString(), eq1.MODELO.ToString(), eq1.SERIE.ToString() });
            }
            grid_Equipos.ClearSelection();
        }

        private void btn_Aceptar_Click(object sender, EventArgs e)
        {
            if (cmb_Usuario.SelectedIndex >= 0)
            {
                if (gribAsignado.Rows.Count > 0)
                {
                    DialogResult dr = controlador.AsignarEquipo(gribAsignado, cmb_Usuario.SelectedItem.ToString());

                    switch (dr)
                    {
                        case DialogResult.OK:
                            MessageBox.Show("Los equipos fueron asignados al usuario "+cmb_Usuario.SelectedItem.ToString()+ ".", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            this.Close();
                            break;
                        case DialogResult.Cancel:
                            MessageBox.Show("Error al asignar equipo", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                            this.Close();
                            break;
                    }
                }
                else
                {
                    MessageBox.Show("No hay equipos asignados en la tabla", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("No ha seleccionado el usuario", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }

        private void cmb_Usuario_SelectedIndexChanged(object sender, EventArgs e)
        {
            //llenamos la grilla          
            string nomb_usu = cmb_Usuario.Text;
            grid_EquipPoseer.Rows.Clear();
            control_RegUsu.get_MuestroEquipos_Cliente(grid_EquipPoseer, nomb_usu);
            grid_EquipPoseer.ClearSelection();        
        }         
    }
}